package com.jay.fault.tolerant;

import com.jay.model.RpcResponse;

import java.util.Map;

/**
 * 容错策略 - 快速失败（立刻通知外层调用方）
 * 该类实现了TolerantStrategy接口，用于定义当服务出现异常时的处理策略
 * 快速失败策略意味着当检测到错误时，立即通知外层调用方，而不是尝试恢复或等待
 */
public class FailFastTolerantStrategy implements TolerantStrategy {

    /**
     * 执行容错处理
     * 此方法在服务出现异常时被调用，根据具体的容错策略来处理异常
     * 在快速失败策略中，该方法会直接抛出一个运行时异常，将错误信息和原始异常传递给外层调用方
     *
     * @param context 包含服务执行上下文信息的映射，用于提供额外的上下文数据，以便在异常处理时使用
     * @param e       服务执行过程中抛出的异常，用于将具体的错误信息传递给调用方
     * @return 由于该策略是直接抛出异常，所以不返回任何值
     * @throws RuntimeException 当服务报错时，立即抛出运行时异常，包含原始异常信息
     */
    @Override
    public RpcResponse doTolerant(Map<String, Object> context, Exception e) {
        throw new RuntimeException("服务报错", e);
    }
}
